// 用户身份校验类
import 'package:shared_preferences/shared_preferences.dart';

class CheckAuth {
  //  用户身份令牌
  String? _token;
  // 常量
  static final String _key = 'AUTH_USER_TOKEN';
  static CheckAuth? _instance;
  // 私有 自定义构造函数
  CheckAuth._internal();
  // factory 全局单例对象
  factory CheckAuth() {
    _instance ??= CheckAuth._internal();
    return _instance!;
  }

// 4. 提供 init 方法用于 从本地获取token
  Future<void> init() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    // 从本地获取token
    _token = prefs.getString(_key) ?? '';
  }

// 5. 提供 saveToken 方法用于 存储token
  Future<void> saveToken(String token) async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    // 存储 token
    await prefs.setString(_key, token);
    _token = token;
  }

// 6. 提供 getToken 方法 用于 同步获取token
  String? getToken() {
    return _token;
  }

// 7. 提供 removeToken 方法 用于 删除token
  Future<void> removeToken() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    // 删除 token
    await prefs.remove(_key);
    _token = null;
  }
}
